This specification describes communication technologies in computer architecture. More specifically, this specification describes technologies related to routing requests produced by accessing a function at a device to a physical sharing machine on a computer interconnect fabric.
Some computer interconnect architectures, such as PCIe (PCI Express) define ways for devices connected to the architecture to be self-virtualizing. Virtualization provides the ability to run multiple environments, known as virtual machines, on a single system. Frequently, virtualization isolates the virtual machines from one another, so that even though the virtual machines may be running on the same hardware, they are able to operate independently so that each has independent access to its own set of resources and they do not interfere with each other.
PCIe is a popular computer interconnect architecture for interconnecting components of a computing system that is fast, scalable, and flexible. PCIe includes a computer interconnect fabric which is frequently based on a combination of switches that provide point-to-point communication within the network. Traffic in a PCIe network is directed by a root complex devices that manages information exchange between a processor and memory and devices on the network.
In order to combine techniques in PCIe with virtualization, Single-Root Input/Output Virtualization (SR-IOV) provides a way for a single root function, such as a network port, to be shared between multiple virtual machines.
However, while SR-IOV permits sharing of a physical resource by multiple virtual machines within a single host, SR-IOV does not define a capability to share resources across multiple hosts.